Skip to content

Luaの短期ツアー

aoをより深く探索する前に、Luaの基本を学びましょう。Luaは、aosプロセスを制御するためのコンパニオンです。

Luaはシンプルな言語で、驚くことは少ないです。もしJavascriptを知っているなら、Luaは簡潔で純粋なバージョンに感じるでしょう。もしゼロから学ぶ場合でも、Luaは重要な部分に焦点を当てた小さな言語であり、シンプルで分かりやすい構文で計算を行います。

このセクションでは、わずか数分でLuaの基本を紹介します。すでにLuaを知っている場合は次の章に進んでください。

aosプロセスに戻る

このチュートリアルでは、すでにはじめにガイドを完了していることを前提とします。まだ完了していない場合は、最初にそれを完了してください。

プロセスからログアウトしている場合は、コマンドラインでaosを実行することで再度開くことができます。必要に応じて、--wallet [location]を指定してキー ファイルを指定できます。

Luaの基本式

この基本レクチャーの残りでは、Luaのコア機能と構文を簡単に紹介します。

例を実際にaosプロセスで試してみてください。直感的に理解できる場合は、スキップしてもかまいません。

  • 基本的な算術: 5 + 3などの基本的な算術を試してください。処理後、結果は8と表示されます。+-*/^は期待通りに動作します。%はLuaでモジュラス(剰余)を表す記号です。

  • 変数の設定: a = 10と入力してEnterを押します。これで変数aに10が設定されます。慣習的に(言語で強制されているわけではありませんが)、Luaではグローバル変数は大文字で始まります(例:Handlers)。

  • 変数の使用: 次にa * 2と入力すると、コマンドラインに20が表示されます。

  • 文字列の連結: 自分に挨拶をしてみましょう。"Hello, " .. ao.idを実行します。

条件文の実験

  • If-Else: ほとんどのプログラミング言語と同様に、Luaではif-elseブロックを使用して条件付きでコードを実行します。

    aosプロセスで.editorと入力してEnterキーを押します。これにより、コマンドラインインターフェイス内にインラインテキストエディタが開きます。

    lua
    aos_coolness = 9001
    if aos_coolness > 9000 then
        return "aos is coolness is over 9000!"
    else
        return "Oh. 🤷"
    end

    ターミナルでの編集が完了したら、新しい行に.doneと入力してEnterを押します。これで編集モードが終了し、式がプロセスに送信されて評価されます。

    その結果、aosのクールさが9,000を超えていることがわかります。知っておいてよかったですね。

    Luaのif文には追加のelseif [条件] thenブロックを追加することもでき、条件付き実行の階層をより簡単に構築できます。

Luaでのループ

Luaでは、コード内でループを作成するいくつかの方法があります。ここでは私たちのお気に入りの方法を紹介します。

  • While loops:

    Start by initalizing your counter to zero by typing n = 0 and pressing enter.

    Then open the inline editor again with .editor .

    lua
    while n < 5 do
      n = n + 1
    end

    新しい行に.doneと入力してwhileループを実行します。ループの結果は、nと入力するだけで確認できます。

  • For loops:

    Luaは、Pythonスタイルのforループも実行できます。例えば、.editorを使用して次のコードブロックを入力します:

    lua
    for m = 1, 100 do
            n = n + m
    end

    nを再度実行して、変数の新しい値を確認します。

Getting functional.

  • Define a function:

    再び.editorを使用して、次の行を入力して送信します:

    lua
    function greeting(name)
        return "Hello, " .. name
    end

    送信すると、aosはundefinedを返します。Luaでは、関数(および変数)の定義は値を返さないためです。

    Luaには「無名関数」や「高階関数」もあります。これにより、関数自体を通常のデータのように扱い、他の関数への引数として渡すことができます。次の例は無名関数を定義しており、上記の例と同等です:

    lua
    greeting =
    		function(name)
        	return "Hello, " .. name
    		end
  • Calling the function: Call the function with greeting("Earthling"). aos will return "Hello, Earthling".

テーブルを使って深いオブジェクトを定義

テーブルは、Luaにおける唯一の複合データ構造です。keysvaluesにマッピングしますが、従来の配列のようにも使用できます。

  • シンプルなテーブルを作成: ao_is = {"hyper", "parallel", "compute"}と入力して、シンプルなテーブルを作成します。
  • テーブルの要素にアクセス: ao_is[2]で要素にアクセスします。aosはparallelを返します。注意:Luaのインデックスは1から始まります!
  • テーブルの要素数をカウント: Luaでテーブルのサイズを取得するには、演算子#を使用します。例えば、#ao_isを実行すると3が返されます。
  • 名前付き要素を設定: ao_is["cool"] = trueと入力して、テーブルに新しい名前付きキーを追加します。名前付き要素は.演算子でもアクセスできます。例えば、ao_is.coolです。

LuaのWats

aosは、シンプルでクリーンな言語であるためLuaを採用しています。経験豊富なプログラマーなら非常に短期間で習得でき、Robloxのようなビデオゲームで使用されていることから、初学者向けのプログラミング言語としても人気が高まっています。

それでもなお、Luaを初めて使う開発者がつまづきやすい点がいくつかあります。好みは人それぞれですが、以下にLuaのwatを紹介します。

  • 覚えておくべきこと: テーブルのインデックスは0ではなく1から始まります!
  • 覚えておくべきこと: 「等しくない」は!=ではなく~=で表現されます。
  • 覚えておくべきこと: Luaではオブジェクトは「テーブル」と呼ばれ、一般的な名前とは異なります。

さあ、始めましょう!

これで、Luaを使って素晴らしい分散プロセスを構築するために必要な知識はすべて手に入れました!次の章では、Luaとaosを使って並列プロセスの構築を始めます。